1.面向对象的特征:继承、封装和多态
2.final, finally, finalize 的区别
  • final是一个修饰符,声明的变量为不可修改。
  • finally是异常捕获的关键字。无论是否异常最后都会执行finally。
  • 垃圾回收调用时会先调用。
3.Exception、Error、运行时异常与一般异常有何异同
  • Error是虚拟机级别的错误,不可恢复,如OutOfMemoryError、ThreadDeath。
  • Exception:
    • Checked Exception:编译器强制程序去捕获该类异常。如IOException、SQLException。
    • RunTime Exception:运行时异,编译器没有进行强制的捕获并处理。如NullPointerException
4.请写出5种常见到的runtime exception

NullPointerException,ArrayIndexOutOfBoundsException,ArithmeticException,ClassCaseException,TimeoutException

5.int 和 Integer 有什么区别,Integer的值缓存范围

Integer是int类型的包装类,int类型只记录值,Integer有内存地址和值。缓存范围-128~127. 默认Integer=null,int=0;

6.包装类,装箱和拆箱
  • 基本数据类型:short,byte,char,int,float,double,long,boolean
  • 包装类型 :Integer Byte Short Long Float Double Character Boolean
  • 转换为大写为装箱,转化为小写的为拆箱子
  • 缓冲池子:Integer范围-128~127 会自动装箱拆箱。(享元模式)
	     Integer ii=1;
		 Integer iii=Integer.valueOf(1);//自动装箱
		 System.out.println(ii==iii&&ii==1&&iii==1);
		 
		//在-128~127 之外的数
		 Integer i1 =200;  
		 Integer i2 =200;          
		 System.out.println("i1==i2: "+(i1==i2));//false                   
		 // 在-128~127 之内的数自动拆箱
		 Integer i3 =100;  
		 Integer i4 =100;  
		 System.out.println("i3==i4: "+(i3==i4));//true 
		 
		 int i0=100;
		 System.out.println(i3==i0);//true
		 System.out.println(i1==i0);//false
7.String、StringBuilder、StringBuffer
  • String为字符串常量,String对象一旦创建之后该对象是不可更改的。速度最慢

  • StringBuffer对象是变量,可以进行字符串更改。速度其次,线程安全

  • StringBuilder速度最快,线程不安全。

8.重载和重写的区别
  • 重写:发生在继承类上,方法名,参数类型,返回类型等都要一致。
  • 重载:发生在一个类上,方法名相同,参数类型,返回类型,权限控制可以不一样。
9:抽象类和接口有什么区别
  • 接口里面的方法都是public abstract,可以定义静态常量, 抽象类可以定义私有变量和私有方法
  • 抽象类只能继承一个父类,但是可以多实现接口,接口可以多继承,
  • 实现接口就要实现所有的方法, 抽象类可以不用实现接口的全部方法
  • 抽象类不能实例化,不能构建对象,子类必须实现父类的抽象方法,子类才可以成功的继承父类
10.说说反射的用途及实现
  • 运行时动态获取一个类的属性、方法
  • 反射API
11.说说自定义注解的场景及实现

比如说实现自定义注解来实现单例模式。多数据源使用自定义注解指定。

12.HTTP请求的GET与POST方式的区别
  • get会把参数放到url中,post放在htmlheader中用户看不了
  • get传输数据大小比较小,而post比较大
  • get从服务器获取数据,而post提交数据
  • get安全性不高,post安全性 高.
13.Session与Cookie区别
  • cookie保存在客户端,session保存在服务端。
  • cookie实现一周自动登录。session实现登录验证。
14.列出自己常用的JDK包

util包,io输入输出流包,net网络传输包

15.MVC设计思想
  • Modoul数据层dao,View视图层前端页面,Controller控制器请求跳转。
16.equals与==的区别
  • equals比较两个变量的值是否相同,==判断值和引用地址是不是一个,判断是否同个对象。
  • 类似Integer这些包装类的大小比较可以直接equal。
17.hashCode和equals方法的区别与联系
  • equals()相等的两个对象,hashcode()一定相等;
  • hashcode()不等,一定能推出equals()也不等;
  • hashcode()相等,equals()可能相等,也可能不等。
18.什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用
  • 序列化是指对象在网络传输或者保存到硬盘等过程中,对象要转化的一种形式。implements Serializable只是为了标注该对象是可被序列化的。
  • Java对象的statictransient 修饰的属性不能被序列化。静态的是因为保存在内存中。transient标记该对象不可被序列化。
19.Java的平台无关性如何体现出来的
  • 一处开发,多处运行。使用jdk开发的代码编译的class文件在各个平台上的 jre 上面都可以运行。
20.JDK和JRE的区别
  • jre是运行时环境
  • jdk包括jre、编译等工具。
21.Java 8有哪些新特性
  • Lambda表达式
  • 流的操作
  • 增加了很多函数式接口
22.值传递和引用传递。
  • 一般认为,java的基本数据类型都是值传递,修改不会影响到原来的变量。
  • 所有的集合类都是引用传递,修改了会对应修改到原来变量的值。
上次更新时间: 2024/5/7 05:59:02